package com.ruoyi.aitapp.utils;

import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.ruoyi.aitcommon.utils.*;
import com.ruoyi.aitu9c.utils.U9JSONResultUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;

import java.io.File;
import java.util.Arrays;
import java.util.List;
import java.util.Map;

@Component
public class U9RestUtils {
    @Autowired
    APPConfigUtils appConfigUtils;
    /**
     * 从system参数设置中获取U9接口配置
     * 翻译用户${username}
     * @param data 数据集合
     * @return
     */
    public JSONObject getERPRest(JSONObject data) throws Exception {
        final JSONObject erprest = appConfigUtils.getAPPParamsJson("erprest");
        //该翻译主要处理用户编码
        final JSONObject restParam2 = (JSONObject) JSONParamUtils.transParamsJSON(erprest, data);
        return restParam2;
    }
    /**
     * 调用U9接口
     * @param context 数据上下文,用于翻译${username}
     * @param url 接口地址,相对地址
     * @param u9data 接口数据,不含context
     * @return U9返回值Data部分,类型是JSONObject和JSONArray两种
     */
    public Object callU9Rest(JSONObject context,String url,Object u9data) throws Exception {
        final JSONObject erpRest = this.getERPRest(context);
        //URL地址拼接
        final String url1 = erpRest.getString("url")+url;
        //获取U9上下文
        final JSONObject u9Context= erpRest.getJSONObject("context");
        //调用U9服务
        JSONObject restData=new JSONObject();
        restData.put("context", u9Context);
        restData.put("data", u9data);
        final JSONObject ret = RestServiceUtils.post(url1.toString(), restData);
        //处理接口返回
        JSONObject ret1 = U9JSONResultUtils.toResult(ret);
        JSONResult.jsonAssert(ret1);
        Object retObj = U9JSONResultUtils.getDataObject(ret1);
        return retObj;
    }
}
